home *** CD-ROM | disk | FTP | other *** search
/ QuickTime 2.0 Developer Kit / QuickTime 2.0 Developer Kit.iso / mac / MAC / Programming Stuff / Interfaces / CIncludes / Terminals.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-11-11  |  15.2 KB  |  377 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        Terminals.h
  3.  
  4.      Copyright:    © 1984-1994 by Apple Computer, Inc.
  5.                  All rights reserved.
  6.  
  7.      Version:    Universal Interfaces 2.0a3  ETO #16, MPW prerelease.  Friday, November 11, 1994. 
  8.  
  9.      Bugs?:        If you find a problem with this file, send the file and version
  10.                  information (from above) and the problem description to:
  11.  
  12.                      Internet:    apple.bugs@applelink.apple.com
  13.                      AppleLink:    APPLE.BUGS
  14.  
  15. */
  16.  
  17. #ifndef __TERMINALS__
  18. #define __TERMINALS__
  19.  
  20.  
  21. #ifndef __DIALOGS__
  22. #include <Dialogs.h>
  23. #endif
  24. /*    #include <Errors.h>                                            */
  25. /*        #include <ConditionalMacros.h>                            */
  26. /*    #include <Memory.h>                                            */
  27. /*        #include <Types.h>                                        */
  28. /*        #include <MixedMode.h>                                    */
  29. /*    #include <Windows.h>                                        */
  30. /*        #include <Quickdraw.h>                                    */
  31. /*            #include <QuickdrawText.h>                            */
  32. /*        #include <Events.h>                                        */
  33. /*            #include <OSUtils.h>                                */
  34. /*        #include <Controls.h>                                    */
  35. /*            #include <Menus.h>                                    */
  36. /*    #include <TextEdit.h>                                        */
  37.  
  38. #ifndef __CTBUTILITIES__
  39. #include <CTBUtilities.h>
  40. #endif
  41. /*    #include <StandardFile.h>                                    */
  42. /*        #include <Files.h>                                        */
  43. /*    #include <AppleTalk.h>                                        */
  44.  
  45. #ifndef __CONNECTIONS__
  46. #include <Connections.h>
  47. #endif
  48.  
  49. #ifdef __cplusplus
  50. extern "C" {
  51. #endif
  52.  
  53. #if GENERATINGPOWERPC
  54. #pragma options align=mac68k
  55. #endif
  56.  
  57. #ifdef __CFM68K__
  58. #pragma lib_export on
  59. #endif
  60.  
  61.  
  62. enum {
  63. /* current Terminal Manager version     */
  64.     curTMVersion                = 2,
  65. /* current Terminal Manager Environment Record version     */
  66.     curTermEnvRecVers            = 0,
  67. /* error codes    */
  68.     tmGenericError                = -1,
  69.     tmNoErr                        = 0,
  70.     tmNotSent                    = 1,
  71.     tmEnvironsChanged            = 2,
  72.     tmNotSupported                = 7,
  73.     tmNoTools                    = 8
  74. };
  75.  
  76. typedef OSErr TMErr;
  77.  
  78.  
  79. enum {
  80.     tmInvisible                    = 1 << 0,
  81.     tmSaveBeforeClear            = 1 << 1,
  82.     tmNoMenus                    = 1 << 2,
  83.     tmAutoScroll                = 1 << 3,
  84.     tmConfigChanged                = 1 << 4
  85. };
  86.  
  87. typedef unsigned long TMFlags;
  88.  
  89.  
  90. enum {
  91.     selTextNormal                = 1 << 0,
  92.     selTextBoxed                = 1 << 1,
  93.     selGraphicsMarquee            = 1 << 2,
  94.     selGraphicsLasso            = 1 << 3,
  95.     tmSearchNoDiacrit            = 1 << 8,
  96.     tmSearchNoCase                = 1 << 9
  97. };
  98.  
  99. typedef unsigned short TMSearchTypes;
  100.  
  101. typedef short TMSelTypes;
  102.  
  103.  
  104. enum {
  105.     cursorText                    = 1,
  106.     cursorGraphics                = 2
  107. };
  108.  
  109. typedef unsigned short TMCursorTypes;
  110.  
  111.  
  112. enum {
  113.     tmTextTerminal                = 1 << 0,
  114.     tmGraphicsTerminal            = 1 << 1
  115. };
  116.  
  117. typedef unsigned short TMTermTypes;
  118.  
  119. struct TermDataBlock {
  120.     TMTermTypes                        flags;
  121.     Handle                            theData;
  122.     Handle                            auxData;
  123.     long                            reserved;
  124. };
  125. typedef struct TermDataBlock TermDataBlock;
  126.  
  127. typedef TermDataBlock *TermDataBlockPtr, **TermDataBlockH, **TermDataBlockHandle;
  128.  
  129. struct TermEnvironRec {
  130.     short                            version;
  131.     TMTermTypes                        termType;
  132.     short                            textRows;
  133.     short                            textCols;
  134.     Point                            cellSize;
  135.     Rect                            graphicSize;
  136.     Point                            slop;
  137.     Rect                            auxSpace;
  138. };
  139. typedef struct TermEnvironRec TermEnvironRec;
  140.  
  141. typedef TermEnvironRec *TermEnvironPtr;
  142.  
  143. union TMSelection {
  144.     Rect                            selRect;
  145.     RgnHandle                        selRgnHandle;
  146. };
  147. typedef union TMSelection TMSelection;
  148.  
  149. typedef struct TermRecord TermRecord, *TermPtr, **TermHandle;
  150.  
  151. typedef pascal long (*TerminalSendProcPtr)(Ptr thePtr, long theSize, long refCon, CMFlags flags);
  152. typedef pascal void (*TerminalBreakProcPtr)(long duration, long refCon);
  153. typedef pascal long (*TerminalCacheProcPtr)(long refCon, TermDataBlockPtr theTermData);
  154. typedef pascal void (*TerminalSearchCallBackProcPtr)(TermHandle hTerm, short refNum, Rect *foundRect);
  155. typedef pascal Boolean (*TerminalClikLoopProcPtr)(long refCon);
  156. typedef pascal CMErr (*TerminalEnvironsProcPtr)(long refCon, TermEnvironRec *theEnvirons);
  157. typedef pascal void (*TerminalChooseIdleProcPtr)(void);
  158. typedef pascal long (*TerminalToolDefProcPtr)(TermHandle hTerm, short msg, long p1, long p2, long p3);
  159.  
  160. #if GENERATINGCFM
  161. typedef UniversalProcPtr TerminalSendUPP;
  162. typedef UniversalProcPtr TerminalBreakUPP;
  163. typedef UniversalProcPtr TerminalCacheUPP;
  164. typedef UniversalProcPtr TerminalSearchCallBackUPP;
  165. typedef UniversalProcPtr TerminalClikLoopUPP;
  166. typedef UniversalProcPtr TerminalEnvironsUPP;
  167. typedef UniversalProcPtr TerminalChooseIdleUPP;
  168. typedef UniversalProcPtr TerminalToolDefUPP;
  169. #else
  170. typedef TerminalSendProcPtr TerminalSendUPP;
  171. typedef TerminalBreakProcPtr TerminalBreakUPP;
  172. typedef TerminalCacheProcPtr TerminalCacheUPP;
  173. typedef TerminalSearchCallBackProcPtr TerminalSearchCallBackUPP;
  174. typedef TerminalClikLoopProcPtr TerminalClikLoopUPP;
  175. typedef TerminalEnvironsProcPtr TerminalEnvironsUPP;
  176. typedef TerminalChooseIdleProcPtr TerminalChooseIdleUPP;
  177. typedef TerminalToolDefProcPtr TerminalToolDefUPP;
  178. #endif
  179.  
  180. struct TermRecord {
  181.     short                            procID;
  182.     TMFlags                            flags;
  183.     TMErr                            errCode;
  184.     long                            refCon;
  185.     long                            userData;
  186.     TerminalToolDefUPP                defProc;
  187.     Ptr                                config;
  188.     Ptr                                oldConfig;
  189.     TerminalEnvironsUPP                environsProc;
  190.     long                            reserved1;
  191.     long                            reserved2;
  192.     Ptr                                tmPrivate;
  193.     TerminalSendUPP                    sendProc;
  194.     TerminalBreakUPP                breakProc;
  195.     TerminalCacheUPP                cacheProc;
  196.     TerminalClikLoopUPP                clikLoop;
  197.     WindowPtr                        owner;
  198.     Rect                            termRect;
  199.     Rect                            viewRect;
  200.     Rect                            visRect;
  201.     long                            lastIdle;
  202.     TMSelection                        selection;
  203.     TMSelTypes                        selType;
  204.     long                            mluField;
  205. };
  206. enum {
  207.     uppTerminalSendProcInfo = kPascalStackBased
  208.          | RESULT_SIZE(SIZE_CODE(sizeof(long)))
  209.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Ptr)))
  210.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))
  211.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long)))
  212.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(CMFlags))),
  213.     uppTerminalBreakProcInfo = kPascalStackBased
  214.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))
  215.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))),
  216.     uppTerminalCacheProcInfo = kPascalStackBased
  217.          | RESULT_SIZE(SIZE_CODE(sizeof(long)))
  218.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))
  219.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(TermDataBlockPtr))),
  220.     uppTerminalSearchCallBackProcInfo = kPascalStackBased
  221.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(TermHandle)))
  222.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
  223.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Rect*))),
  224.     uppTerminalClikLoopProcInfo = kPascalStackBased
  225.          | RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
  226.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long))),
  227.     uppTerminalEnvironsProcInfo = kPascalStackBased
  228.          | RESULT_SIZE(SIZE_CODE(sizeof(CMErr)))
  229.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))
  230.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(TermEnvironRec*))),
  231.     uppTerminalChooseIdleProcInfo = kPascalStackBased,
  232.     uppTerminalToolDefProcInfo = kPascalStackBased
  233.          | RESULT_SIZE(SIZE_CODE(sizeof(long)))
  234.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(TermHandle)))
  235.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
  236.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long)))
  237.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(long)))
  238.          | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(long)))
  239. };
  240.  
  241. #if GENERATINGCFM
  242. #define NewTerminalSendProc(userRoutine)        \
  243.         (TerminalSendUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTerminalSendProcInfo, GetCurrentArchitecture())
  244. #define NewTerminalBreakProc(userRoutine)        \
  245.         (TerminalBreakUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTerminalBreakProcInfo, GetCurrentArchitecture())
  246. #define NewTerminalCacheProc(userRoutine)        \
  247.         (TerminalCacheUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTerminalCacheProcInfo, GetCurrentArchitecture())
  248. #define NewTerminalSearchCallBackProc(userRoutine)        \
  249.         (TerminalSearchCallBackUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTerminalSearchCallBackProcInfo, GetCurrentArchitecture())
  250. #define NewTerminalClikLoopProc(userRoutine)        \
  251.         (TerminalClikLoopUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTerminalClikLoopProcInfo, GetCurrentArchitecture())
  252. #define NewTerminalEnvironsProc(userRoutine)        \
  253.         (TerminalEnvironsUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTerminalEnvironsProcInfo, GetCurrentArchitecture())
  254. #define NewTerminalChooseIdleProc(userRoutine)        \
  255.         (TerminalChooseIdleUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTerminalChooseIdleProcInfo, GetCurrentArchitecture())
  256. #define NewTerminalToolDefProc(userRoutine)        \
  257.         (TerminalToolDefUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTerminalToolDefProcInfo, GetCurrentArchitecture())
  258. #else
  259. #define NewTerminalSendProc(userRoutine)        \
  260.         ((TerminalSendUPP) (userRoutine))
  261. #define NewTerminalBreakProc(userRoutine)        \
  262.         ((TerminalBreakUPP) (userRoutine))
  263. #define NewTerminalCacheProc(userRoutine)        \
  264.         ((TerminalCacheUPP) (userRoutine))
  265. #define NewTerminalSearchCallBackProc(userRoutine)        \
  266.         ((TerminalSearchCallBackUPP) (userRoutine))
  267. #define NewTerminalClikLoopProc(userRoutine)        \
  268.         ((TerminalClikLoopUPP) (userRoutine))
  269. #define NewTerminalEnvironsProc(userRoutine)        \
  270.         ((TerminalEnvironsUPP) (userRoutine))
  271. #define NewTerminalChooseIdleProc(userRoutine)        \
  272.         ((TerminalChooseIdleUPP) (userRoutine))
  273. #define NewTerminalToolDefProc(userRoutine)        \
  274.         ((TerminalToolDefUPP) (userRoutine))
  275. #endif
  276.  
  277. #if GENERATINGCFM
  278. #define CallTerminalSendProc(userRoutine, thePtr, theSize, refCon, flags)        \
  279.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppTerminalSendProcInfo, (thePtr), (theSize), (refCon), (flags))
  280. #define CallTerminalBreakProc(userRoutine, duration, refCon)        \
  281.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppTerminalBreakProcInfo, (duration), (refCon))
  282. #define CallTerminalCacheProc(userRoutine, refCon, theTermData)        \
  283.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppTerminalCacheProcInfo, (refCon), (theTermData))
  284. #define CallTerminalSearchCallBackProc(userRoutine, hTerm, refNum, foundRect)        \
  285.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppTerminalSearchCallBackProcInfo, (hTerm), (refNum), (foundRect))
  286. #define CallTerminalClikLoopProc(userRoutine, refCon)        \
  287.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppTerminalClikLoopProcInfo, (refCon))
  288. #define CallTerminalEnvironsProc(userRoutine, refCon, theEnvirons)        \
  289.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppTerminalEnvironsProcInfo, (refCon), (theEnvirons))
  290. #define CallTerminalChooseIdleProc(userRoutine)        \
  291.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppTerminalChooseIdleProcInfo)
  292. #define CallTerminalToolDefProc(userRoutine, hTerm, msg, p1, p2, p3)        \
  293.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppTerminalToolDefProcInfo, (hTerm), (msg), (p1), (p2), (p3))
  294. #else
  295. #define CallTerminalSendProc(userRoutine, thePtr, theSize, refCon, flags)        \
  296.         (*(userRoutine))((thePtr), (theSize), (refCon), (flags))
  297. #define CallTerminalBreakProc(userRoutine, duration, refCon)        \
  298.         (*(userRoutine))((duration), (refCon))
  299. #define CallTerminalCacheProc(userRoutine, refCon, theTermData)        \
  300.         (*(userRoutine))((refCon), (theTermData))
  301. #define CallTerminalSearchCallBackProc(userRoutine, hTerm, refNum, foundRect)        \
  302.         (*(userRoutine))((hTerm), (refNum), (foundRect))
  303. #define CallTerminalClikLoopProc(userRoutine, refCon)        \
  304.         (*(userRoutine))((refCon))
  305. #define CallTerminalEnvironsProc(userRoutine, refCon, theEnvirons)        \
  306.         (*(userRoutine))((refCon), (theEnvirons))
  307. #define CallTerminalChooseIdleProc(userRoutine)        \
  308.         (*(userRoutine))()
  309. #define CallTerminalToolDefProc(userRoutine, hTerm, msg, p1, p2, p3)        \
  310.         (*(userRoutine))((hTerm), (msg), (p1), (p2), (p3))
  311. #endif
  312.  
  313. extern pascal TMErr InitTM(void);
  314. extern pascal Handle TMGetVersion(TermHandle hTerm);
  315. extern pascal short TMGetTMVersion(void);
  316. extern pascal TermHandle TMNew(const Rect *termRect, const Rect *viewRect, TMFlags flags, short procID, WindowPtr owner, TerminalSendUPP sendProc, TerminalCacheUPP cacheProc, TerminalBreakUPP breakProc, TerminalClikLoopUPP clikLoop, TerminalEnvironsUPP environsProc, long refCon, long userData);
  317. extern pascal void TMDispose(TermHandle hTerm);
  318. extern pascal void TMKey(TermHandle hTerm, const EventRecord *theEvent);
  319. extern pascal void TMUpdate(TermHandle hTerm, RgnHandle visRgn);
  320. extern pascal void TMPaint(TermHandle hTerm, const TermDataBlock *theTermData, const Rect *theRect);
  321. extern pascal void TMActivate(TermHandle hTerm, Boolean activate);
  322. extern pascal void TMResume(TermHandle hTerm, Boolean resume);
  323. extern pascal void TMClick(TermHandle hTerm, const EventRecord *theEvent);
  324. extern pascal void TMIdle(TermHandle hTerm);
  325. extern pascal long TMStream(TermHandle hTerm, void *theBuffer, long theLength, CMFlags flags);
  326. extern pascal Boolean TMMenu(TermHandle hTerm, short menuID, short item);
  327. extern pascal void TMReset(TermHandle hTerm);
  328. extern pascal void TMClear(TermHandle hTerm);
  329. extern pascal void TMResize(TermHandle hTerm, const Rect *newViewRect);
  330. extern pascal long TMGetSelect(TermHandle hTerm, Handle theData, ResType *theType);
  331. extern pascal void TMGetLine(TermHandle hTerm, short lineNo, TermDataBlock *theTermData);
  332. extern pascal void TMSetSelection(TermHandle hTerm, const TMSelection *theSelection, TMSelTypes selType);
  333. extern pascal void TMScroll(TermHandle hTerm, short dh, short dv);
  334. extern pascal Boolean TMValidate(TermHandle hTerm);
  335. extern pascal void TMDefault(Ptr *theConfig, short procID, Boolean allocate);
  336. extern pascal Handle TMSetupPreflight(short procID, long *magicCookie);
  337. extern pascal void TMSetupSetup(short procID, const void *theConfig, short count, DialogPtr theDialog, long *magicCookie);
  338. extern pascal Boolean TMSetupFilter(short procID, const void *theConfig, short count, DialogPtr theDialog, EventRecord *theEvent, short *theItem, long *magicCookie);
  339. extern pascal void TMSetupItem(short procID, const void *theConfig, short count, DialogPtr theDialog, short *theItem, long *magicCookie);
  340. extern pascal void TMSetupXCleanup(short procID, const void *theConfig, short count, DialogPtr theDialog, Boolean OKed, long *magicCookie);
  341. extern pascal void TMSetupPostflight(short procID);
  342. extern pascal Ptr TMGetConfig(TermHandle hTerm);
  343. extern pascal short TMSetConfig(TermHandle hTerm, const void *thePtr);
  344. extern pascal OSErr TMIntlToEnglish(TermHandle hTerm, const void *inputPtr, Ptr *outputPtr, short language);
  345. extern pascal OSErr TMEnglishToIntl(TermHandle hTerm, const void *inputPtr, Ptr *outputPtr, short language);
  346. extern pascal void TMGetToolName(short id, Str255 name);
  347. extern pascal short TMGetProcID(ConstStr255Param name);
  348. extern pascal void TMSetRefCon(TermHandle hTerm, long refCon);
  349. extern pascal long TMGetRefCon(TermHandle hTerm);
  350. extern pascal void TMSetUserData(TermHandle hTerm, long userData);
  351. extern pascal long TMGetUserData(TermHandle hTerm);
  352. extern pascal short TMAddSearch(TermHandle hTerm, ConstStr255Param theString, const Rect *where, TMSearchTypes searchType, TerminalSearchCallBackUPP callBack);
  353. extern pascal void TMRemoveSearch(TermHandle hTerm, short refnum);
  354. extern pascal void TMClearSearch(TermHandle hTerm);
  355. extern pascal Point TMGetCursor(TermHandle hTerm, TMCursorTypes cursType);
  356. extern pascal TMErr TMGetTermEnvirons(TermHandle hTerm, TermEnvironRec *theEnvirons);
  357. extern pascal short TMChoose(TermHandle *hTerm, Point where, TerminalChooseIdleUPP idleProc);
  358. extern pascal void TMEvent(TermHandle hTerm, const EventRecord *theEvent);
  359. extern pascal Boolean TMDoTermKey(TermHandle hTerm, ConstStr255Param theKey);
  360. extern pascal short TMCountTermKeys(TermHandle hTerm);
  361. extern pascal void TMGetIndTermKey(TermHandle hTerm, short id, Str255 theKey);
  362. extern pascal void TMGetErrorString(TermHandle hTerm, short id, Str255 errMsg);
  363.  
  364. #ifdef __CFM68K__
  365. #pragma lib_export off
  366. #endif
  367.  
  368. #if GENERATINGPOWERPC
  369. #pragma options align=reset
  370. #endif
  371.  
  372. #ifdef __cplusplus
  373. }
  374. #endif
  375.  
  376. #endif /* __TERMINALS__ */
  377.